如何从java中的页面获取不同的url?
我正在开发一个程序,从XKCD网站下载前100本漫画,但是XKCD的URL与图像URL不同。为了方便起见,我想知道在转到XKCD URL之后是否有一种简单的方法来获取图像的URL。这是我的密码:
public class XKCD {
public static void saveImage(String imageUrl, int i) throws IOException {
URL url = new URL(imageUrl);
String fileName = url.getFile();
String destName = i + fileName.substring(fileName.lastIndexOf("/"));
System.out.println(destName);
InputStream is = url.openStream();
OutputStream os = new FileOutputStream(destName);
byte[] b = new byte[2048];
int length;
while ((length = is.read(b)) != -1) {
os.write(b, 0, length);
}
is.close();
os.close();
}
public static void main(String[] args) throws MalformedURLException,
IOException {
for(int i=1;i<=100;i++){
saveImage("https://xkcd.com/"+i+"/", i);
}
}
# 1 楼答案
我建议用JSOUP来做这件事。它可以从相对链接生成绝对URL:
您可以使用以下方法将库导入到项目中:
您可以使用如下简单代码获得图像的绝对路径:
如果运行此代码,您将看到控制台上打印的图像URL:
# 2 楼答案
XKCD有一个JSON API:https://xkcd.com/about/
下面是一个很好的JavaJSON库:https://github.com/stleary/JSON-java
真的很容易使用,我用了很多
因此,如果您有来自xkcd的文本。com/info。txt中的0.json,您可以说:
这应该行得通
# 3 楼答案
这里的问题是,调用saveImage方法不是使用image,而是使用页面URL
获取页面本身,然后从以下示例字符串解析正则表达式: